import type { AxiosRequestConfig, CancelToken } from 'axios';

export type ContentType = 'application/json' | 'multipart/form-data' | 'application/x-www-form-urlencoded';


// 请求配置扩展接口
export interface RequestConfig extends AxiosRequestConfig {
  /**
   * 请求重试次数
   */
  retry?: number;
  /**
   * 重试间隔时间（毫秒）
   */
  retryDelay?: number;
  /**
   * 取消令牌 - 修复类型从Canceler改为CancelToken
   */
  cancelToken?: CancelToken;
  /**
   * 是否显示加载状态
   */
  showLoading?: boolean;
  /**
   * 加载状态文本
   */
  loadingText?: string;
  /**
   * 是否显示错误提示
   */
  showError?: boolean;
  /**
   * 业务类型，用于日志和监控
   */
  businessType?: string;
}

// API响应基础接口
export interface ApiResponse<T = any> {
  /**
   * 状态码
   */
  code: number;
  /**
   * 响应数据
   */
  data: T;
  /**
   * 响应消息
   */
  message: string;
}

// 分页请求参数接口
export interface PaginationParams {
  /**
   * 当前页码
   */
  pageNum: number;
  /**
   * 每页条数
   */
  pageSize: number;
  /**
   * 排序字段
   */
  sortField?: string;
  /**
   * 排序方式，asc或desc
   */
  sortOrder?: 'asc' | 'desc';
  /**
   * 搜索关键字
   */
  keyword?: string;
  /**
   * 其他查询条件
   */
  [key: string]: any;
}

// 分页响应接口
export interface PaginationResult<T = any> {
  /**
   * 当前页码
   */
  pageNum: number;
  /**
   * 每页条数
   */
  pageSize: number;
  /**
   * 总条数
   */
  total: number;
  /**
   * 总页数
   */
  pages: number;
  /**
   * 数据列表
   */
  list: T[];
}

